package br.com.msystem.biblioteca.vo;

// Generated 01/03/2012 01:28:16 by Hibernate Tools 3.4.0.CR1

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Usuario generated by hbm2java
 */
@Entity
@Table(name = "usuario", catalog = "biblioteca")
public class Usuario implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 2195039866584947758L;
	private Integer idUsuario;
	private GrupoUsuario grupoUsuario;
	private String login;
	private String senha;
	private Date dataCadastro;
	private boolean bloqueado;
	private String motivoBloqueio;
	private String email;
	private String nomeUsuario;
	private String nomeUsuarioChines;
	private String telefone;
	private String endereco;
	private Set<BloquearMaterialBibliografico> bloquearMaterialBibliograficos = new HashSet<BloquearMaterialBibliografico>(
			0);
	private Set<ReservarMaterialBibliografico> reservarMaterialBibliograficos = new HashSet<ReservarMaterialBibliografico>(
			0);
	private Set<SolicitarReserva> solicitarReservas = new HashSet<SolicitarReserva>(
			0);
	private Set<EmprestarMaterialBibliografico> emprestarMaterialBibliograficos = new HashSet<EmprestarMaterialBibliografico>(
			0);

	public Usuario() {
	}

	public Usuario(GrupoUsuario grupoUsuario, String login, String senha,
			boolean bloqueado) {
		this.grupoUsuario = grupoUsuario;
		this.login = login;
		this.senha = senha;
		this.bloqueado = bloqueado;
	}

	public Usuario(GrupoUsuario grupoUsuario, String login, String senha,
			Date dataCadastro, boolean bloqueado, String motivoBloqueio,
			String email, String nomeUsuario, String nomeUsuarioChines,
			String telefone, String endereco,
			Set<BloquearMaterialBibliografico> bloquearMaterialBibliograficos,
			Set<ReservarMaterialBibliografico> reservarMaterialBibliograficos,
			Set<SolicitarReserva> solicitarReservas,
			Set<EmprestarMaterialBibliografico> emprestarMaterialBibliograficos) {
		this.grupoUsuario = grupoUsuario;
		this.login = login;
		this.senha = senha;
		this.dataCadastro = dataCadastro;
		this.bloqueado = bloqueado;
		this.motivoBloqueio = motivoBloqueio;
		this.email = email;
		this.nomeUsuario = nomeUsuario;
		this.nomeUsuarioChines = nomeUsuarioChines;
		this.telefone = telefone;
		this.endereco = endereco;
		this.bloquearMaterialBibliograficos = bloquearMaterialBibliograficos;
		this.reservarMaterialBibliograficos = reservarMaterialBibliograficos;
		this.solicitarReservas = solicitarReservas;
		this.emprestarMaterialBibliograficos = emprestarMaterialBibliograficos;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id_usuario", unique = true, nullable = false)
	public Integer getIdUsuario() {
		return this.idUsuario;
	}

	public void setIdUsuario(Integer idUsuario) {
		this.idUsuario = idUsuario;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_grupo_usuario", nullable = false)
	public GrupoUsuario getGrupoUsuario() {
		return this.grupoUsuario;
	}

	public void setGrupoUsuario(GrupoUsuario grupoUsuario) {
		this.grupoUsuario = grupoUsuario;
	}

	@Column(name = "login", nullable = false, length = 50)
	public String getLogin() {
		return this.login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	@Column(name = "senha", nullable = false, length = 50)
	public String getSenha() {
		return this.senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "data_cadastro", length = 19)
	public Date getDataCadastro() {
		return this.dataCadastro;
	}

	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	@Column(name = "bloqueado", nullable = false)
	public boolean isBloqueado() {
		return this.bloqueado;
	}

	public void setBloqueado(boolean bloqueado) {
		this.bloqueado = bloqueado;
	}

	@Column(name = "motivo_bloqueio", length = 65535)
	public String getMotivoBloqueio() {
		return this.motivoBloqueio;
	}

	public void setMotivoBloqueio(String motivoBloqueio) {
		this.motivoBloqueio = motivoBloqueio;
	}

	@Column(name = "email", nullable = false, length = 50)
	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	@Column(name = "nome_usuario", nullable = true, length = 100)
	public String getNomeUsuario() {
		return this.nomeUsuario;
	}

	public void setNomeUsuario(String nomeUsuario) {
		this.nomeUsuario = nomeUsuario;
	}

	@Column(name = "nome_usuario_chines", nullable = true, length = 100)
	public String getNomeUsuarioChines() {
		return nomeUsuarioChines;
	}

	public void setNomeUsuarioChines(String nomeUsuarioChines) {
		this.nomeUsuarioChines = nomeUsuarioChines;
	}

	@Column(name = "telefone", nullable = true, length = 30)
	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	@Column(name = "endereco", nullable = true, length = 100)
	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<BloquearMaterialBibliografico> getBloquearMaterialBibliograficos() {
		return this.bloquearMaterialBibliograficos;
	}

	public void setBloquearMaterialBibliograficos(
			Set<BloquearMaterialBibliografico> bloquearMaterialBibliograficos) {
		this.bloquearMaterialBibliograficos = bloquearMaterialBibliograficos;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<ReservarMaterialBibliografico> getReservarMaterialBibliograficos() {
		return this.reservarMaterialBibliograficos;
	}

	public void setReservarMaterialBibliograficos(
			Set<ReservarMaterialBibliografico> reservarMaterialBibliograficos) {
		this.reservarMaterialBibliograficos = reservarMaterialBibliograficos;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<SolicitarReserva> getSolicitarReservas() {
		return this.solicitarReservas;
	}

	public void setSolicitarReservas(Set<SolicitarReserva> solicitarReservas) {
		this.solicitarReservas = solicitarReservas;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<EmprestarMaterialBibliografico> getEmprestarMaterialBibliograficos() {
		return this.emprestarMaterialBibliograficos;
	}

	public void setEmprestarMaterialBibliograficos(
			Set<EmprestarMaterialBibliografico> emprestarMaterialBibliograficos) {
		this.emprestarMaterialBibliograficos = emprestarMaterialBibliograficos;
	}

}
